from flask import render_template, jsonify
from loguru import logger


def init_error_views(app):
    """
    全局异常处理
    """

    @app.errorhandler(403)
    def page_not_found(e):
        return render_template('errors/403.html'), 403

    @app.errorhandler(404)
    def page_not_found(err):
        return jsonify({"success": False, "msg": str(err), 'code': err.code, "data": str(err)}), 404

    # Return validation errors as JSON
    @app.errorhandler(422)
    @app.errorhandler(400)
    @app.errorhandler(500)
    def handle_error(err):
        """
        全局500异常处理，在debug=True的时候不会生效，在生产模式就会生效
        """
        logger.error("全局异常处理" + str(err))

        return jsonify({"success": False, "msg": str(err), 'code': err.code, "data": str(err.original_exception)})
